package com.qiaoba.module.system.service;

import cn.hutool.core.lang.tree.Tree;
import com.qiaoba.api.system.entity.dto.SysMenuDTO;
import com.qiaoba.api.system.service.SysMenuApiService;
import com.qiaoba.module.system.entity.SysMenu;
import com.qiaoba.module.system.entity.param.SysMenuParam;

import java.util.List;

/**
 * 菜单 服务层
 *
 * @author ailanyin
 * @date 2023-09-10 12:11:32
 */
public interface SysMenuService extends SysMenuApiService {

    /**
     * 新增菜单
     *
     * @param dto 菜单
     * @return 结果
     */
    int insert(SysMenuDTO dto);

    /**
     * 修改菜单
     *
     * @param dto 菜单
     * @return 结果
     */
    int updateById(SysMenuDTO dto);

    /**
     * 删除菜单
     *
     * @param menuId 菜单ID
     * @return 结果
     */
    int deleteById(String menuId);

    /**
     * 查询列表
     *
     * @param param 条件
     * @return 菜单列表
     */
    List<SysMenu> selectList(SysMenuParam param);

    /**
     * 查询详细
     *
     * @param menuId    菜单Id
     * @param allowNull 允许为空
     * @return 菜单信息
     */
    SysMenu selectById(String menuId, boolean allowNull);

    /**
     * 构建前端所需要下拉树结构
     *
     * @param menus 菜单列表
     * @return 下拉树结构列表
     */
    List<Tree<String>> buildMenuTree(List<SysMenu> menus);
}
